package file;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.util.SplittableRandom;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: YKH
 * Date: 2022-08-07
 * Time: 17:04
 */
//递归遍历一个指定目录,访问删除指定的文件
public class Demo14 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入要扫描的路径 :  ");
        String rootPath = scanner.next();
        File root = new File(rootPath);
        if( !root.isDirectory()) {
            System.out.println("输入的路径不存在,无法扫描!");
            return ;
        }
        System.out.println("请输入要删除的文件名 : ");
        String todelete = scanner.next();

        //准备进行递归遍历,找到所有文件
        //再找到对应的文件,进行删除
        scan(root, todelete);
    }

    public static void scan( File rootDir, String todelete) {
        System.out.println( "当前所在路径 :" +rootDir);
        //创建一个 文件数组, 存放该路径下扫描得到的所有文件名
        File[] files = rootDir.listFiles();
        if( files == null) {
            //空目录,直接返回
            return ;
        }
        //遍历得到的文件名
        for (File f:files) {
            //如果是目录,继续递归
            if( f.isDirectory()) {
                scan( f,todelete);
            } else {   //是普通文件, 进行判断是否是要删除的文件,是进行删除
                tryDelete( f,todelete);
            }
        }
    }

    public static void tryDelete(File f, String toddelete) {
        //判断当前文件是否包含要删除的关键字 ,是进行删除
        if( f.getName().contains(toddelete)) {
            try {
                System.out.println("是否要删除该文件( Y / N ) " + f.getCanonicalPath());
                Scanner scanner = new Scanner(System.in);
                String choice = scanner.next();
                if( choice.equals("Y")) {
                    f.delete();
                    System.out.println("删除成功!");
                }
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
}
